package com.fxjava.displayanrdate.controller;

import com.fxjava.displayanrdate.mapper.IssueDataMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * 测试/诊断用控制器（非业务接口）
 *
 * 说明：这些接口用于验证数据库连接、查看表结构与示例数据，便于联调排查。
 * 当前前端业务页面未直接调用本控制器。
 */
@RestController
@RequestMapping("/api/test")
@CrossOrigin(origins = "*")
public class TestController {

  @Autowired
  private IssueDataMapper issueDataMapper;

  /**
   * 诊断：测试数据库连接与基本查询是否可用
   * 前端：未直接使用（开发/排查用）
   */
  @GetMapping("/connection")
  public Map<String, Object> testConnection() {
    try {
      List<Map<String, Object>> result = issueDataMapper.getTimeSeriesDaily(null, null, null);
      return Map.of(
          "status", "success",
          "message", "数据库连接成功",
          "dataCount", result.size());
    } catch (Exception e) {
      return Map.of(
          "status", "error",
          "message", "数据库连接失败: " + e.getMessage());
    }
  }

  /**
   * 诊断：查看表 issue_data 的列信息（来自 information_schema）
   * 前端：未直接使用（开发/排查用）
   */
  @GetMapping("/table-structure")
  public Map<String, Object> getTableStructure() {
    try {
      List<Map<String, Object>> columns = issueDataMapper.getTableColumns();
      return Map.of(
          "status", "success",
          "tableName", "issue_data",
          "columns", columns);
    } catch (Exception e) {
      return Map.of(
          "status", "error",
          "message", "获取表结构失败: " + e.getMessage());
    }
  }

  /**
   * 诊断：获取 issue_data 示例数据（limit 条）
   * 前端：未直接使用（开发/排查用）
   */
  @GetMapping("/sample-data")
  public Map<String, Object> getSampleData(@RequestParam(defaultValue = "10") int limit) {
    try {
      List<Map<String, Object>> data = issueDataMapper.getSampleData(limit);
      return Map.of(
          "status", "success",
          "data", data,
          "count", data.size());
    } catch (Exception e) {
      return Map.of(
          "status", "error",
          "message", "获取示例数据失败: " + e.getMessage());
    }
  }

  /**
   * 诊断：按型号统计问题 Top5（与业务统计口径类似）
   * 前端：未直接使用（开发/排查用）
   */
  @GetMapping("/data-stats")
  public Map<String, Object> getDataStats() {
    try {
      List<Map<String, Object>> modelStats = issueDataMapper.getModelProblemStats();
      return Map.of(
          "status", "success",
          "modelStats", modelStats);
    } catch (Exception e) {
      return Map.of(
          "status", "error",
          "message", "获取数据统计失败: " + e.getMessage());
    }
  }
}
